package student.aistar.day16;

import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;

/**
 * 反射获取构造方法
 */
public class ConstructorInfoDemo {
    public static void main(String[] args) throws Exception {
        Class<?> c = Class.forName("student.aistar.day16.Point");

        //2. 获取所有的构造方法 - 包括私有的
        Constructor<?>[] constructors = c.getDeclaredConstructors();

        //3. 判断
        if(null != constructors && constructors.length > 0){
            for (int i = 0; i < constructors.length; i++) {
                //1. 获取修饰符
                System.out.print(Modifier.toString(constructors[i].getModifiers()) + " ");

                //2. 获取构造方法的名称
                System.out.print(constructors[i].getName() + " (");

                //3. 获取构造方法的参数列表
                Class<?>[] types = constructors[i].getParameterTypes();

                //判断 - 防止是空参构造
                if(types != null && types.length > 0){
                    for (int j = 0; j < types.length; j++) {
                        if(j != types.length - 1){
                            System.out.print(types[j].getSimpleName() + ", ");
                        }
                        else{
                            System.out.print(types[j].getSimpleName());
                        }
                    }
                }
                System.out.println(")");

            }
        }


    }
}
